1. Field of the Invention
The invention concerns interactive computer systems generally and more specifically concerns navigation in graphical user interfaces.
2. Description of Related Art
FIG. 1 shows a typical portion 101 of a display produced by a program that is using a graphical user interface. A graphical user interface (GUI) permits the user to follow and control operation of the program. The GUI produces a display of the current status of the program on a display device belonging to the computer system and the user can interact with the display by means of a pointing and selection device such as a mouse. A display produced by a GUI typically contains a number of active areas 103, that is, areas which, when selected by means of the pointing device, cause the program using the GUI to perform some action. An active area may be a button, for example active area 103(a), text, for example active area 103(j), or any area of the display which may be navigated to and selected. The action performed when an active area is selected is of course defined completely by the program using the GUI. For example, selection of active area 103(a) in FIG. 1 causes the program to "back up", that is, display a set of information which precedes the one it is currently displaying. Thus, to make the program "back up", the user of the program navigates to active area 103(a) and then selects the active area. Focus indicator 105 moves as the user navigates and indicates which active area is currently the focus, i.e., which active area will be selected if the user does the selection at that point in time. There are of course many forms of focus indicator; in FIG. 1, focus indicator 105 is a frame around the active area, but it may also be some other kind of cursor or the focus may be indicated by changing the appearance of the active area itself, for example, by highlighting it, making it blink, or displaying it in reverse video.
Navigation in a GUI is generally done by means of a movable pointing device such as a mouse, stylus, joystick, pressure sensitive pad, or track ball. With all of these devices, the user moves an object and the motion of the object is translated into motion of focus indicator 105 in the graphical user interface. There are, however, situations in which it is not practical to use a movable pointing device. One such situation is when the GUI is part of a program that controls a television set and is consequently displayed on the screen of the television set. Users of television sets are accustomed to remote controllers with buttons, not to movable pointing devices, and cost constraints make it difficult to add a movable pointing device to a remote controller. Another such situation is when the program that the GUI belongs to must run on a computer which does not have a movable pointing device.
In both situations, navigation techniques have been developed which use buttons to navigate instead of movable pointing devices. Many GUIs that are designed for use with movable pointing devices also permit the user to navigate among active areas 103 by means of the tab key on the keyboard. The tab key has two modes, forward tabbing and back tabbing, and consequently, the tab keys cannot be used to indicate motion in two dimensions, as would normally be required in a GUI. This problem is solved with a list of active areas; the current position in the list is that of the active area 103 at which focus indicator 105 is located; each time the tab key is struck in forward tabbing mode, focus indicator 105 is moved to the next active area on the list; each time the tab key is struck in back tabbing mode, focus indicator 105 is moved to the previous active area on the list. While this technique works, it may require many keystrokes. For instance, if the active areas in GUI portion 101 are linked together in a list which begins with area 103(a) and continues in left-to-right and top-to-bottom order through area 103(n), a user who wishes to navigate from area 103(i) to area 103(n) must push the tab key 5 times, even though area 103(i) is directly over area 103(n). In the following, navigation techniques like the one just described which do not take direction into account in moving the focus will be termed non-directional navigation techniques. Remote controllers have been developed for television sets that display GUIs. These remote controllers often have direction buttons that may be used to navigate from active area to active area in the GUI. An example of such a remote controller and of a GUI with which it is used are disclosed in published European patent application EP 0 698 985 A2, Balk, et al., Apparatus for Providing a Graphical Control Interface, published Feb. 28, 1996 in Bulletin 1996/09. As disclosed at FIG. 6 of that reference, the remote controller has four direction buttons, up, down, left, and right. As indicated at column 10, lines 6-8, these buttons are "for navigating from one field to another in menus; the up arrow indicates the next field up, the down arrow the next field down, and so forth." Thus, in such a system, a user would navigate from active area 103(i) to active area 103(n) by pushing the controller's down button. Such a system could of course also be used with the direction keys on a standard computer keyboard. Another example of a navigation system that uses direction keys is that employed in the Internet access system developed by WebTV Networks, Incorporated. The WebTV Internet access system employs a television set as a display device and uses a modified remote controller with direction keys for navigation. In the following, pointing devices that work like those just described by specifying a direction with reference to a current position in the display will be termed directional pointing devices.
In the past, computer systems which used a movable pointing device for navigation and systems which used directional pointing devices belonged to different worlds; at present, the increasing availability of the Internet and of interactive TV are making these worlds come together, resulting in a need for an easy way to adapt GUIs that were designed for non-directional navigation techniques to navigation by means of directional pointing devices.